﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using Gustozzi.BL;

namespace WebGustozzi.ModuloVentas
{
    ///<summary>
    ///Nombre	    : wfMantenimienroVendedor
    ///Descripción	: 
    ///               
    ///</summary>
    ///<remarks>
    ///Fecha        Moficado Por        Descripción
    ///15/02/2012               	    Versión inicial
    ///23/02/2012   Marco Pizarro	    Agregar validaciones iniciales
    public partial class wfMantenimienroVendedor : System.Web.UI.Page
    {
        VentasDataEntities contexto;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) 
            {
                Inicializa();
            }
        }
        public void Inicializa() 
        {
            if(contexto==null)
            {
                contexto = new VentasDataEntities();
            }
            var listadoZona = (from p in contexto.ZonasDistribucion
                                   select new 
                                   {
                                       Codigo=p.codigoZona,
                                       Nombre=p.nombreZona
                                   });
            ddlZona.DataSource = listadoZona;
            ddlZona.DataTextField = "Nombre";
            ddlZona.DataValueField = "Codigo";
            ddlZona.DataBind();

            var listadoLocal = (from p in contexto.LocalesComerciales
                               select new
                               {
                                   Codigo = p.codigoLocal,
                                   Nombre = p.nombreLocal
                               });
            ddlLocalComercial.DataSource = listadoLocal;
            ddlLocalComercial.DataTextField = "Nombre";
            ddlLocalComercial.DataValueField = "Codigo";
            ddlLocalComercial.DataBind();
            

           string codigoVendedor= Request.QueryString["cVend"];
           if (codigoVendedor.Equals("0"))
            {
                var idEmpleado = (from p in contexto.Vendedores
                                  select p.codigoVendedor).Max();
                idEmpleado += 1;

                txtCodigoVendedor.Text = idEmpleado.ToString();
            }
            else
            {
                txtCodigoVendedor.Text = codigoVendedor;
                CargarDatos();
            }
        }

        public void EditarControles(Boolean estado)
        {
            txtCodigoVendedor.Enabled = estado;
            txtNombres.Enabled = estado;
            txtApellidoPaterno.Enabled = estado;
            txtApellidoMaterno.Enabled = estado;
            txtNroDoc.Enabled = estado;
            txtSueldo.Enabled = estado;
            txtComision.Enabled = estado;
            ddlZona.Enabled = estado;
            ddlLocalComercial.Enabled = estado;
            rblEstado.Enabled = estado;
        }
        protected void txtCodigoVendedor_TextChanged(object sender, EventArgs e)
        {
            try
            {
                CargarDatos();
            }
            catch (Exception ex)
            {
                lblMsj.Text =  ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }
        public void CargarDatos() 
        {
            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }
            int idVendedor=0;
            if (!txtCodigoVendedor.Text.Trim().Equals (string.Empty)) 
            {
                idVendedor = Convert.ToInt32(txtCodigoVendedor.Text.Trim());
            }
            var lstVendedor=from p in contexto.Vendedores.Include("Empleado")
                            where p.codigoVendedor == idVendedor
                            select p;

            txtNombres.Text = string.Empty;
            txtApellidoPaterno.Text = string.Empty;
            txtApellidoMaterno.Text = string.Empty;
            txtNroDoc.Text = string.Empty;
            txtSueldo.Text = string.Empty;
            txtComision.Text = string.Empty;
            ddlZona.SelectedIndex = 0;
            ddlLocalComercial.SelectedIndex = 0;

            if (lstVendedor != null) 
            {
                if (lstVendedor.Count()>0) 
                {
                    Vendedor oVendedor = (Vendedor)lstVendedor.First();
                    txtNombres.Text = oVendedor.Empleado.nombre;
                    txtApellidoPaterno.Text = oVendedor.Empleado.apellidoPaterno;
                    txtApellidoMaterno.Text = oVendedor.Empleado.apellidoMaterno;
                    txtNroDoc.Text = oVendedor.Empleado.nroDNI;
                    txtSueldo.Text = oVendedor.Empleado.sueldo.ToString();
                    txtComision.Text = oVendedor.comision.ToString();
                    ddlZona.SelectedValue = oVendedor.codigoZona.ToString();
                    ddlLocalComercial.SelectedValue = oVendedor.codigoLocal.ToString();
                }
            }
        }

        protected void imbGuardar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Guardar();
            }
            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }
        public void Guardar()
        {
            if (txtCodigoVendedor.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese codigo de vendedor");
            }

            if (this.txtNombres.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese nombre del vendedor");
            }

            if (this.txtApellidoPaterno.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese apellido paterno del vendedor");
            }

            if (this.txtApellidoMaterno.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese apellido materno del vendedor");
            }

            if (this.txtNroDoc.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese número de documento del vendedor");
            }

            if (ddlLocalComercial.SelectedIndex <= 0)
            {
                throw new Exception("Seleccione codigo de Local Comercial");
            }

            if (ddlZona.SelectedIndex <= 0) 
            {
                throw new Exception("Seleccione codigo de zona");
            }

            if (this.txtSueldo.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese el sueldo del vendedor");
            }

            if (this.txtNroDoc.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese el % de comisión del vendedor");
            }

            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }

            int idVendedor = Convert.ToInt32(txtCodigoVendedor.Text.Trim());

            var lstVendedores = from p in contexto.Vendedores.Include("Empleado")
                                where p.codigoVendedor == idVendedor
                                select p;

            bool actualizado = false;
            
            Vendedor oVendedor = null;
            Empleado oEmpleado = new Empleado();

            if (lstVendedores != null)
            {
                if (lstVendedores.Count() > 0)
                {
                    oVendedor = (Vendedor)lstVendedores.First();
                    actualizado = true;
                }
            }

            if (!actualizado)
            {
                oVendedor = new Vendedor();
                contexto.AddToVendedores(oVendedor);
            }
            oVendedor.comision = Convert.ToDouble(txtComision.Text.Trim());
            oVendedor.codigoZona = Convert.ToInt32(ddlZona.SelectedValue);
            oVendedor.codigoLocal = Convert.ToInt32(ddlLocalComercial.SelectedValue);
            oEmpleado.sueldo = Convert.ToDouble(txtSueldo.Text.Trim());
            oEmpleado.nroDNI = txtNroDoc.Text;
            oEmpleado.nombre = txtNombres.Text;
            oEmpleado.apellidoPaterno = txtApellidoPaterno.Text;
            oEmpleado.apellidoMaterno = txtApellidoMaterno.Text;

            VendedorBL oVendedorBL = new VendedorBL();

            int numRegistros = oVendedorBL.ActualizarVendedor(oVendedor, oEmpleado,contexto);
          if (numRegistros > 0)
          {
              lblMsj.Text = "Se guardo satisfactoriamente los datos del vendedor.";
              lblMsj.ForeColor = System.Drawing.Color.Blue;
              divMensaje.Visible = true;
              EditarControles(false);
              imbGuardar.Visible = false;
              imbCancelar.Visible = false;
              imbCerrar.Visible = true;
          }
          else 
          {
              lblMsj.Text = "Se produjo un error al intentar guardar, cierre y vuelva a intentarlo.";
              lblMsj.ForeColor = System.Drawing.Color.Red;
              divMensaje.Visible = true;
          }
        }

    }
}